package com.group11.studentm.view;

import com.group11.studentm.domain.User;
import com.group11.studentm.service.LoginService;
import com.group11.studentm.utils.ValidationUtil;

import java.util.Scanner;

/**
 *
 * @date 2022/12/06/17:21
 * @since 17
 */
public class ViewLoginRegister {

    Scanner scanner = new Scanner(System.in);
    LoginService loginService = new LoginService();

    /**
     * 注册
     * @return 注册成功返回true
     */
    public boolean registerView() {

        System.out.println("=============注册=============");
        System.out.println("选择身份[老师或学生] 学号 姓名 密码 密码确认");
        System.out.print("选择身份：");
        String selectedItem = scanner.next();
        System.out.print("学号：");
        String sno = scanner.next();
        System.out.print("姓名：");
        String username = scanner.next();
        System.out.print("密码：");
        String password1 = scanner.next();
        System.out.print("密码确认：");
        String password2 = scanner.next();

        if(sno.length()==0||password1.length()==0 ||username.length()==0||password2.length()==0){
            //trim():用于删除头尾的空白符
            System.out.println("学号用户名密码不允许为空");
        }else if(!ValidationUtil.checkSno(sno)){
            System.out.println("学号输入有误");
        }else{
            //判断学号或者工号与身份是否对应 1005开头是老师 2005开头是学生
            StringBuffer buffer = new StringBuffer(sno);
            String s = buffer.substring(0, 4);
            boolean flag = false;
            if ("学生".equals(selectedItem)) {
                if (!"2005".equals(s)) {
                    flag = true;
                }
            } else if ("老师".equals(selectedItem)) {
                if (!"1005".equals(s)) {
                    flag=true;
                }
            }

            if (flag) {
                System.out.println("学号输入有误");
                return false;
            } else {
                if (!ValidationUtil.checkName(username)||!ValidationUtil.checkPassword(password1)||!ValidationUtil.checkPassword(password2)) {
                    System.out.println("用户名或密码输入有误");
                    return false;
                }
                //与数据库信息比较
                else if (!password1.equals(password2)) {
                    System.out.println("密码不一致");
                    return false;
                }else if (loginService.register(sno,username,password1)){
                    System.out.println("注册成功，即将返回登录页");
                    //关闭当前页面
                    return true;
                }else{
                    System.out.println("注册失败，请检查学号");
                    return false;
                }
            }
        }
        return true;
    }

    public String sno = null;
    public String username = null;
    /**
     * 登录
     * @return 0失败 1学生 2老师 3管理员
     */
    public int loginView(){
        System.out.println("==============登录=============");
        System.out.println("输入学号\t姓名\t密码\t");
        System.out.print("学号：");
        sno = scanner.next();
        System.out.print("姓名：");
        username = scanner.next();
        System.out.print("密码：");
        String password = scanner.next();
        // 调用service方法检查
        User dbUser = null;
        if(sno.length()==0||username.length()==0||password.length()==0){
            System.out.println("学号号用户名密码不允许为空");
            return 0;
        }
        else if (!ValidationUtil.checkSno(sno)) {
            System.out.println("学号号输入有误");
            return 0;
        } else {
            if (!ValidationUtil.checkName(username)||!ValidationUtil.checkPassword(password)) {
                System.out.println("用户名或密码有误");
                return 0;
            }
            //与数据库信息比较
            else if ((dbUser = loginService.loginCheck(sno,username,password))!=null) {
                //判断学号与身份是否对应 1005开头是老师 2005开头是学生
                String trim = sno.trim();
                StringBuffer buffer = new StringBuffer(trim);
                String s = buffer.substring(0, 4);

                if ("2005".equals(s)) {
                    //打开学生页面
                    System.out.println("学生登录");
                    return 1;
                }else if ("2002".equals(s)){
                    //打开教师页面
                    System.out.println("老师登录");
                    return 2;
                }else if ("2001".equals(s)){
                    //打开管理员页面
                    System.out.println("管理员登录");
                    return 3;
                }

            } else {
                System.out.println("登录失败，请检查学号用户名或密码");
                return 0;
            }
        }
        return 0;
    }
}
